Skip to content

Reverse order of values when upserting #1317

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 23, 2025
Merged

Conversation

andyundso
Copy link
Member

I contributed two tests to Rails because I was not sure how insert_all and upsert_all should behave with duplicate identifiers, but with different values in other columns.

For insert_all, all DBMS only insert the first value. For upsert_all, PostgreSQL throws an error in this scenario, but with sqlite and MySQL, the last entry ends up in the database.

For now, I do not have a smarter idea than reversing the inserts, which ultimately provide the values_list. Adding MAX would be another idea, but I fear the SQL query would get much more complicated.

I contributed two tests to Rails because I was not sure how `insert_all` and `upsert_all` should behave with duplicate identifiers.

For `insert_all`, all DBMS only insert the first value. For `upsert_all`, PostgreSQL throws an error in this scenario, but with sqlite and MySQL, the last entry ends up in the database.

For now, I do not have a smarter idea than reversing the `inserts`, which ultimately provide the `values_list`. Adding `MAX` would be another, but I fear the SQL query would get much more complicated.
@aidanharan aidanharan merged commit f69c849 into main Mar 23, 2025
1 of 6 checks passed
@aidanharan aidanharan deleted the reverse-upsert-order branch March 23, 2025 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants